package aLeSoftware;

import javax.swing.*;
import modulePas.*;
import palette.*;
import dessin.ControleurDessin;
import dessin.VueDessin;
import toolbar.ControleurToolBar;
import toolbar.VueToolBar;





import java.awt.*;
/**EnvironnementDessin est une classe héritée de JPanel, elle correspond à au contenu
 * d'un onglet dans le logiciel. Cette classe contient plusieurs modules :<br>
 * <li>Une palette de couleur</li>
 * <li>Une palette d'outils</li>
 * <li>Une zone de dessin</li>
 */
public class EnvironnementDessin extends JPanel{
	
	
	 /**
     * Atrribut ModeleGeneral
     * @See ModeleGeneral
     */
private ModeleGeneral mGeneral;

/**
 * Accesseurs qui permet d'atteindre le ModeleGeneral de la classe EnvironnementDessin
 * @return un ModeleGeneral
 */
public ModeleGeneral getmGeneral() {return mGeneral;}


/**
 * Constructeur qui prend en parametre un ModeleGeneral. 
 * Ce constructeur va initialiser les quatres zones de EnvironnementDessin :
 * <ul>
 * <li>WEST : une Toolbar</li>
 * <li>EAST : une palette de couleur</li>
 * <li>CENTER : une zone de dessin</li>
 * <li>SOUTH : un module d'information qui sert à régler le Pas et à l'afficher, il sert aussi à afficher la position actuelle du curseur sur la zone de dessin</li>
 * </ul>
 * @param arg
 */
public EnvironnementDessin(ModeleGeneral arg) {
	this.mGeneral = arg;
	 
    //initialisation du module ToolBar
    ControleurToolBar ctoolbar = new ControleurToolBar(this.mGeneral);
    VueToolBar vtoolbar = new VueToolBar(ctoolbar);
    this.mGeneral.addObservateur(vtoolbar);
    //fin initialisation
    
    //initialisation du module MVC Zone de dessin
    ControleurDessin cdessin = new ControleurDessin(this.mGeneral);
    VueDessin vdessin = new VueDessin(cdessin);
    this.mGeneral.addObservateur(vdessin);
    //fin initialisation
    
	//initialisation du module MVC palette
	ModelePalette mpalette = this.mGeneral.getModPalette();
    ControleurPalette cpalette = new ControleurPalette(mpalette);
    VuePalette vpalette = new VuePalette(cpalette);
    mpalette.addObservateur(vpalette);
    mpalette.addObservateur(vdessin);
    //fin intialisation
    
    //initialisation du module Pas
    ControleurPas cPas = new ControleurPas(mGeneral);
    VuePas vPas = new VuePas(cPas);
    mGeneral.addObservateur(vPas);
    //fin initialisation
    
    
	 
	//Ajout de la zone de dessin au GridBagLayout
    JPanel gridBag = new JPanel(new GridBagLayout ());
    
    gridBag.setBackground(Color.darkGray);
    gridBag.add(vdessin, new GridBagConstraints (1, 1, 1, 1, 0, 0,
            GridBagConstraints.CENTER,
            GridBagConstraints.CENTER,
            new Insets (0,0,0,0), 0, 0));    
    
    
    //On rend le GridBagLayout scrollable
    JScrollPane scroll = new JScrollPane(gridBag);
    
    
    
    this.setLayout(new BorderLayout());
    this.add(vtoolbar,BorderLayout.WEST);
    this.add(vpalette,BorderLayout.EAST);
    this.add(scroll,BorderLayout.CENTER);
    this.add(vPas,BorderLayout.SOUTH);
	
}



	
}
